Event-based systems are increasingly gaining widespread attention for applications that require integration with loosely coupled and distributed systems for time-critical business solutions. An event is a record of an activity in a system. The event signifies the activity. An event may be related to other events. For purposes of maintaining information about an activity, events also capture attributes about the context when the event occurred. Event attributes are items such as the agents, resources, and data associated with an event, the tangible result of an activity (e.g., the result of an approval decision), or any other information that gives character to the specific occurrence of that type of event. Elements of an event context can be used to define a relationship with other events in order to correlate them.
Traditionally, event-based systems use publish-subscribe paradigms as well as stream processing, continuous queries, and event correlation. Event-based systems may also employ various ways of representing, filtering and querying events. In many cases, event models have grown from query languages, distributed platforms or architectures for integrating systems.
Event-based systems require structural information (metadata) on the events they process. Therefore, event-based systems use “event types” for classifying event objects. To this end, within event-based systems events should be instances of an event type and have the structure defined by their type. The structure is represented as a collection of event attributes. An event attribute is a component of the structure of an event. An attribute can have a simple or complex data type.
However, in distributed systems the type of an event received by an event-processing entity is often unknown at runtime if unstructured, i.e. “raw” events are received.
Accordingly, there is a need in event processing systems to gain structural information of unstructured raw events in order to allow fast implementations of event-driven applications.